The misuse of computer software is costly. For the provider and/or user of unauthorized software, the cost of misusing software can be measured, in part, in terms of legal costs and fines if found to violate any copyrights and/or licensing agreements associated with the misused software. Additional dangers lie in the fact that unauthorized software applications often contain viruses with the potential to damage individual computers or even an entire network. Further still, unlicensed software may cause incompatibility between programs that would normally function together seamlessly. Yet another cost associated with the misuse of computer software is to a developer, server, or provider of licensed software products for whom the cost of misused software can be measured primarily in terms of lost licensing revenue.
Accordingly, developers, servers, and providers of licensed or otherwise authorized software products are highly motivated to regulate the execution of software on authorized operating systems for client devices and server devices. Crucial considerations for succeeding in such endeavor include quickly and accurately identifying and then restricting unauthorized software applications from loading without hindering the concurrent execution of licensed software applications.
Previous attempts at identifying software products for the purpose of restricting those that are not licensed or otherwise authorized include performing a bit-by-bit comparison of the entire code of a file against a known version thereof, comparing the size of a file to previously known parameters, and comparing a predetermined number of bits at the beginning of the file to those of previous versions of the file. However, such efforts are easily thwarted because the binary code associated with unauthorized software products may be changed, even slightly, to avoid detection. For instance, changing a file name or file location can change the appearance and/or size of a file, thus frustrating efforts to regulate the usage thereof. Even minor code fixes, not intended to circumvent file recognition, can render a file unrecognizable relative to known versions. Furthermore, such efforts consume valuable processing resources and/or overhead, which impede the usage of licensed or otherwise authorized software products.